package org.ccay.excel.importer;

import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;

import org.ccay.excel.exception.ExcelValidationException;
import org.ccay.excel.importer.service.IExcelDataConsumer;
import org.ccay.excel.meta.ExcelMeta;
import org.ccay.excel.meta.SheetMeta;

/**
 * Excel导入时的上下文信息。
 * 	
 * @author chaowangbang
 * @since Mar 21, 2012
 */
public interface IExcelImportContext {
	
	/**
	 * 获取本次的请求描述。
	 * 
	 * @return
	 */
	public ExcelImportRequest getRequest();
	
	/**
	 * 获取对应的Excel元数据信息。
	 * 
	 * @return
	 */
	public ExcelMeta getExcelMeta();
	
	/**
	 * 获取对应的Excel元数据信息。
	 * 
	 * @return
	 */
	public void setExcelMeta(ExcelMeta excelMeta);
	
	/**
	 * 获取当前正在处理的Sheet的元数据信息。
	 * 
	 * @return
	 */
	public SheetMeta getCurrentSheet();
	
	/**
	 * 获取当前正在处理的Sheet的元数据信息。
	 * 
	 * @return
	 */
	public void setCurrentSheet(SheetMeta sheetMeta);
	
	/**
	 * 获取当前数据消费者。
	 * 
	 * @return
	 */
	public IExcelDataConsumer getCurrentDataConsumer();
	
	/**
	 * 获取标题映射信息。
	 * 
	 * @return
	 */
	public ITitleMapper getTitleMapper();
	
	/**
	 * @return
	 */
	public ResourceBundle getResourceBundle();
	
	/**
	 * 添加已经成功导入的数据行数。
	 * 
	 * @param count
	 */
	public void addImportedCount(int count);
	
	/**
	 * 获取已经成功导入的数据行数。
	 * 
	 * @return
	 */
	public int getImportedCount();
	
	/**
	 * 
	 * 设置已经处理的行数
	 * @param count
	 * @return
	 * Created：2012-9-12
	 * @author chaowangbang
	 */
	public void setImportedCount(int count);
	
	/**
	 * 添加已经处理的数据行数。
	 * 
	 * @param count
	 */
	public void addProcessedCount(int count);
	/**
	 * 设置已经处理的数据行数。
	 * 
	 * @param count
	 */
	public void setProcessedCount(int count);
	
	
	/**
	 * 获取已经处理的数据行数。
	 * 
	 * @return
	 */
	public int getProcessedCount();
	
	
	/**
	 * 获取错误信息。
	 * @return
	 */
	public List<ExcelCellError> getErrors();
	
	/**
	 * 添加错误信息
	 * @param error
	 * @throws ExcelValidationException
	 */
	public void addCellError(ExcelCellError error) throws ExcelValidationException;
	
	/**
	 * 添加错误信息list
	 * @param errors
	 * @throws ExcelValidationException
	 */
	public void addCellErrors(List<ExcelCellError> errors) throws ExcelValidationException;
	
	/**
	 * 获取用户消费数据map对象
	 * @return
	 * Created：2012-10-9
	 * @author chaowangbang
	 */
	public Map<?, ?> getConsumerDataMap();
	
	/**
	 * 设置用户消费对象数据map对象
	 * @param dataMap
	 * Created：2012-10-9
	 * @author chaowangbang
	 */
	public void setConsumerDataMap(Map<?, ?> dataMap);
	
	/**
	 * 获取当前exclemeta 处理
	 * @return
	 * Created：2013-9-3
	 * @author chaowangbang
	 */
	public Map<String, String> getNameDisplayNameMap();

	public void setNameDisplayNameMap(Map<String, String> nameDisplayNameMap) ;
	
}
